<?php  

	//******************文章管理模型******************
	class ArticleModel extends Model{
		//定义表名
		public $table = 'article';

		//******************自动完成******************
		public $auto = array(
			//1.字段名，2.方法名，3.种类 有可能是function,4.验证条件，5.验证时机
			array('sendtime','_sendtime','method',2,1),
			array('attr','_attr','method',2,3),
			array('user_uid','_uid','method',2,1)
		);

		public function _sendtime(){
			return time();
		}

		//文章属性
		public function _attr(){
			//获得文章属性
			$attr = Q('post.attr');
			//判断attr是否为数组
			if (is_array($attr)) {
				//将数组拆分为字符串
				$str = implode(',', $attr);
				//反出字符串
				return $str;
			}
		}

		//所属用户id
		public function _uid(){
			//返出session中的aid
			return session('aid');
		}

		//******************添加文章******************
		public function add_data(){
			//1.文章主表---------------------------------
			//判断是否上传缩略图
			if(!empty($_FILES['thumb']['name'])){
				//实例化上传类
				$upload = new Upload();
				//获得上传后返回的数组
				$arr = $upload->upload();
				if(!$arr) {
					$this->error = $upload->error;
					return false;
				}
				//转化数组
				$data = current($arr);
				//反出图片路径
				$this->data['thumb'] = $data['thumb'];
			}
			//执行模型中的添加方法 返回自增id
			//$this -> data['sendtime'] = time();
			$aid = $this -> add();

			//2.文章标签中间表---------------------------
			//获得分类id
			$cid = Q('post.category_cid',0,'intval');
			//判断标签有没有 是不是数组
			if (isset($_POST['tag']) && is_array($_POST['tag'])) {
				//循环tag标签 组合数据
				foreach ($_POST['tag'] as $v) {
					$tagData = array(
						'article_aid'	=> $aid,
						'tag_tid'		=> (int)$v,
						'category_cid'	=> $cid
					);
					//执行文章标签中间表模型中的添加方法
					K('ArticleTag') -> add_data($tagData);
				}
			}

			//3.文章附表--------------------------------
			//组合数据 
			$arcData = array(
				'keywords' 		=> $_POST['keywords'],
				'description'	=> $_POST['description'],
				'content'		=> $_POST['content'],
				'article_aid'	=> $aid
			);
			//执行文章附表模型中的添加方法
			K('ArticleData') -> add_data($arcData);
			return true;
		}

		//******************修改数据方法*************
		public function modify_data($aid,$save){
			$this -> where(array('aid'=>$aid)) -> save(array('is_recycle'=>$save));
		}

		//******************删除数据方法*************
		public function del_data($aid){
			//------------------删除缩略图-----------------
			//组合where条件
			$where = array('aid'=>$aid);
			//获得缩略图
			$thumbPath = $this -> where($where) -> getField('thumb');
			//组合完整路径
			$thumbFullPath = ROOT_PATH . $thumbPath;
			//判断是否存在
			if (is_file($thumbPath)) {
				//删除缩略图
				unlink($thumbFullPath);
				//获得源图路径
				$sourcePath = str_replace(C('THUMB_ENDFIX'), '', $thumbFullPath);
				//删除源图
				if(is_file($sourcePath)) unlink($sourcePath);
				//删除主表
				$this->where(array('aid'=>$aid))->delete();		
			}
			//--------------删除文章中间表--------------
			//组合where条件
			$where = array('article_aid'=>$aid);
			//执行标签表模型中的删除方法
			K('ArticleTag')->del_tag($where);

			//--------------删除文章附表--------------
			//执行文章附表模型中的删除方法
			K('ArticleData')->del_data($where);
			return true;
		}	

		//******************获得数据方法*************
		public function get_data($cid){
			return $this -> where(array('category_cid'=>$cid)) -> all();
		}

		//******************删除缩略图*************
		public function del_img($aid){
			$this -> where(array('aid'=>$aid)) -> save(array('thumb'=>''));
		}

		//******************编辑文章*************
		public function edit(){
			//-------------------1.文章主表-------------------
			//获得aid
			$aid = Q('get.aid',0,'intval');
			//修改数据
			$this -> where(array('aid'=>$aid)) -> save();

			//-------------------2.文章附表-------------------
			//执行文章附表中的修改方法
			K('ArticleData') -> edit($aid);

			//-------------------3.文章标签中间表-------------------
			//执行文章标签中间表模型
			$tagModel = K('ArticleTag');
			//执行文章标签中间表模型中的删除方法
			$tagModel -> del_tag(array('article_aid'=>$aid));
			
			//获得分类id
			$cid = Q('post.category_cid',0,'intval');
			//判断标签有没有 是不是数组
			if (isset($_POST['tag']) && is_array($_POST['tag'])) {
				//循环tag标签 组合数据
				foreach ($_POST['tag'] as $v) {
					$tagData = array(
						'article_aid'	=> $aid,
						'tag_tid'		=> (int)$v,
						'category_cid'	=> $cid
					);
					//执行文章标签中间表模型中的添加方法
					K('ArticleTag') -> add_data($tagData);
				}
			}
			return true;			
		}
	}
?>